package com.library.common.util;

import android.app.Activity;
import android.content.Context;

import com.library.common.R;
import com.library.common.base.BaseApplication;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.tools.PictureFileUtils;

import java.util.Date;


/**
 * PackageName : cn.ewhale.xinnongtong.com.vitabuybuy.tv.utils
 * Author : SimGa Liu
 * Date : 2017/11/02
 * Time : 17:47
 */
public class PictureUtils {

    /**
     * 单独拍照不裁剪
     *
     * @param activity
     */
    public static void openCamera(Activity activity, int requestCode) {
        PictureSelector.create(activity)
                .openCamera(PictureMimeType.ofImage())
                .isAndroidQTransform(false)
                .isCamera(true)//单独使用相机 媒体类型 PictureMimeType.ofImage()、ofVideo()
                .imageEngine(GlideEngine.createGlideEngine())// 图片加载引擎 需要 implements ImageEngine接口
                .isWeChatStyle(true)//开启R.style.picture_WeChat_style样式
                .imageFormat(PictureMimeType.PNG_Q)//拍照图片格式后缀,默认jpeg, PictureMimeType.PNG，Android Q使用PictureMimeType.PNG_Q
                .isCompress(true)//是否压缩
                .cameraFileName("malaysia_" + new Date().getTime() + ".png")
                .setOutputCameraPath(SdCardUtil.get(BaseApplication.Companion.getInstance()).DEFAULT_PHOTO_PATH)
                .minimumCompressSize(500)// 小于多少kb的图片不压缩
                .forResult(requestCode);//结果回调分两种方式onActivityResult()和OnResultCallbackListener方式
    }

    /**
     * 单独拍照并矩形裁剪
     *
     * @param activity
     */
    public static void openCameraRectangle(Activity activity, int requestCode) {
        PictureSelector.create(activity)
                .openCamera(PictureMimeType.ofImage())
                .imageEngine(GlideEngine.createGlideEngine())// 图片加载引擎 需要 implements ImageEngine接口
                .isWeChatStyle(true)
                .isEnableCrop(true)// 是否裁剪 true or false
                .imageFormat(PictureMimeType.PNG_Q)
                .isAndroidQTransform(false)
                .freeStyleCropEnabled(true)// 裁剪框是否可拖拽 true or false
                .withAspectRatio(1, 1)
                .circleDimmedLayer(false)// 是否圆形裁剪 true or false
                .showCropFrame(true)// 是否显示裁剪矩形边框 圆形裁剪时建议设为false   true or false
                .scaleEnabled(true)// 裁剪是否可放大缩小图片 true or false
                .showCropGrid(false)// 是否显示裁剪矩形网格 圆形裁剪时建议设为false    true or false
                .isDragFrame(true)// 是否可拖动裁剪框(固定)
                .cameraFileName("malaysia_" + new Date().getTime() + ".png")
                .setOutputCameraPath(SdCardUtil.get(BaseApplication.Companion.getInstance()).DEFAULT_PHOTO_PATH)
                .selectionMode(PictureConfig.SINGLE)
                .forResult(requestCode);
    }


    /**
     * 单独选择一张图片不裁剪
     *
     * @param activity
     */
    public static void openAluamOne(Activity activity, int requestCode) {
        PictureSelector.create(activity)
                .openGallery(PictureMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
                .isWeChatStyle(true)
                .imageEngine(GlideEngine.createGlideEngine())// 图片加载引擎 需要 implements ImageEngine接口
                .imageSpanCount(4)// 每行显示个数 int
                .imageFormat(PictureMimeType.PNG_Q)
                .isAndroidQTransform(false)
                .isEnableCrop(false)// 是否裁剪 true or false
                .isCompress(true)
                .cutOutQuality(80)
                .minimumCompressSize(100)// 小于100kb的图片不压缩
                .selectionMode(PictureConfig.SINGLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
                .forResult(requestCode);
    }

    /**
     * 单独选择一张图片并矩形裁剪
     *
     * @param activity
     */
    public static void openAluamOneRectangle(Activity activity, int requestCode) {
        PictureSelector.create(activity)
                .openGallery(PictureMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
                .isWeChatStyle(true)
                .imageEngine(GlideEngine.createGlideEngine())// 图片加载引擎 需要 implements ImageEngine接口
                .imageSpanCount(3)// 每行显示个数 int
                .isEnableCrop(true)// 是否裁剪 true or false
                .imageFormat(PictureMimeType.PNG)
                .isAndroidQTransform(false)
                .withAspectRatio(1, 1)
                .freeStyleCropEnabled(true)// 裁剪框是否可拖拽 true or false
                .circleDimmedLayer(false)// 是否圆形裁剪 true or false
                .showCropFrame(true)// 是否显示裁剪矩形边框 圆形裁剪时建议设为false   true or false
                .showCropGrid(false)// 是否显示裁剪矩形网格 圆形裁剪时建议设为false    true or false
                .selectionMode(PictureConfig.SINGLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
                .isCamera(false)// 是否显示拍照按钮 true or false
                .isDragFrame(true)// 是否可拖动裁剪框(固定)
                .scaleEnabled(true)// 裁剪是否可放大缩小图片 true or false
                .forResult(requestCode);
    }

    /**
     * 选择多张图片
     *
     * @param activity
     */
    public static void openAluamMore(Activity activity, int requestCode, int num) {
        PictureSelector.create(activity)
                .openGallery(PictureMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
                .isWeChatStyle(true)
                .maxSelectNum(num)// 最大图片选择数量 int
//                .selectionMedia(list)// 是否传入已选图片 List<LocalMedia> list
                .imageSpanCount(3)// 每行显示个数 int
                .isAndroidQTransform(false)
                .imageEngine(GlideEngine.createGlideEngine())// 图片加载引擎 需要 implements ImageEngine接口
                .imageFormat(PictureMimeType.PNG)
                .isEnableCrop(false)// 是否裁剪 true or false
                .isCompress(true)// 是否压缩 true or false
                .cutOutQuality(80)
                .minimumCompressSize(500)// 小于500kb的图片不压缩
                .selectionMode(PictureConfig.MULTIPLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
                .isCamera(true)// 是否显示拍照按钮 true or false
                .forResult(requestCode);
    }

    /**
     * 选择一个视频
     *
     * @param activity
     */
    public static void openAluamOneByVideo(Activity activity, int maxSecond, int requestCode) {
        PictureSelector.create(activity)
                .openGallery(PictureMimeType.ofVideo())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
                .imageEngine(GlideEngine.createGlideEngine())// 图片加载引擎 需要 implements ImageEngine接口
                .isWeChatStyle(true)
                .imageSpanCount(3)// 每行显示个数 int
                .videoMaxSecond(maxSecond)//最大显示多少秒
                .recordVideoSecond(maxSecond)
                .isCamera(true)
                .videoQuality(0)
                .isAndroidQTransform(false)
                .selectionMode(PictureConfig.SINGLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
                .forResult(requestCode);
    }
    //包括裁剪和压缩后的缓存，要在上传成功后调用，注意：需要系统sd卡权限
    public static void clearCache(Context activity) {
        PictureFileUtils.deleteCacheDirFile(activity,PictureMimeType.ofAll());
    }
}
